/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package iteracon.stack;

import iteracon.stack.iterator.Pulley;
import iteracon.stack.iterator.StkIter;
import java.util.Iterator;
import iteracon.IteraconBase;
import java.util.List;
import java.util.ListIterator;

/**
 * empty stack object
 * @author martin
 */
public final class EmptyStk<T> extends StkBase<T>{
  /**
   * constructor
   */
  private EmptyStk(){
  }
  /**
   * of course it is a singleton
   */
  private static final Stk _singleton = new EmptyStk();
  /**
   * factory
   * @param <T> as type;
   * @return singleton
   */
  public static<T> Stk<T> makeStk(){
    return _singleton;
  }
  
  @Override
  public T top() {
    return null;
  }

  @Override
  public Stk<T> pop() {
    return null;
  }

  @Override
  public int size() {
    return 0;
  }

}
